<?php  if (!defined('BASEPATH'))   exit('No direct script access allowed');

class Visiteur_Model extends CI_Model {
	private  $monPdo;
	private	 $cmdSelectByLoginMdp;
	private $cmdUpdateMdp;
	/**
	 * Initialise une instance de la classe Visiteur_Model
	 * - Récupère les paramètres de configuration liés au serveur MySql
	 * - Prépare les requêtes SQL qui comportent des parties variables
	 */
	public function __construct() {
		 parent::__construct();
		// demande à charger les paramètres de configuration du fichier models.php
 		$this->config->load("models");
 		$server = $this->config->item("hostname");
 		$bdd = $this->config->item("database");
 		$user = $this->config->item("username");
 		$mdp = $this->config->item("password");
 		$driver = $this->config->item("dbdriver");
 					
 		// ouverture d'une connexion vers le serveur MySql dont la configuration vient d'être chargée
 		try {
 			$this->monPdo = new PDO($driver . ":host=" . $server . ";dbname=" . $bdd, 
								$user, $mdp, 
								array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES 'UTF8'"));	
 		}
 		catch (Exception $e) {
 			log_message('error', $e->getMessage());
 			throw new Exception("Base de données inaccessible");
 		}
 		// préparation de la requête de sélection d'un visiteur à partir de son numéro
 		$query = "select id from visiteur where login = ? and mdp = ?";
 		$this->cmdSelectByLoginMdp = $this->monPdo->prepare($query);
		$this->cmdSelectByLoginMdp->setFetchMode(PDO::FETCH_ASSOC);
 		$query = "update visiteur set mdp = ? where id = ?";
 		$this->cmdUpdateMdp = $this->monPdo->prepare($query);
	}
	/**
	 * Retourne les données du visiteur médical si couple (login, mdp) existant,
	 * le booléen false sinon.
	 *
	 * @return array tableau comportant toutes les données du visiteur authentifié
	 * @return boolean false si utilisateur non reconnu
	 */	
	public function get_one_byloginmdp($login, $mdp) {
		$values = array($login, $mdp);
		$this->cmdSelectByLoginMdp->execute($values);
		$unVisiteur = $this->cmdSelectByLoginMdp->fetch();
		$succes = is_array($unVisiteur);
		$this->cmdSelectByLoginMdp->closeCursor();
		return $unVisiteur;
	}
	
	/**
	 * Met à jour le mot de passe du visiteur identifié par id
	 *
	 * @return array tableau comportant toutes les données du visiteur authentifié
	 * @return boolean true si opération réussie, false sinon
	 */	
	public function update_mdp($id, $newMdp) {
		$values = array($newMdp, $id);
		$this->cmdUpdateMdp->execute($values);
		$nb = $this->cmdUpdateMdp->rowCount();
		return $nb > 0;
	}
	
}
?>